﻿#define _CRT_SECURE_NO_WARNINGS 1
/*
Q5:辗转相除（欧几里得算法）：(1)如果 a 和 b 是两个正整数，且 a>b ，则a和b的最⼤公约数等于 b 和 a%b （ a 除以 b所得的余数）的最⼤公约数。
                             (2)最⼩公倍数可以由两数乘积除以两数的最⼤公约数求得
* 
* 
Q10:盗窃案
Q16 输⼊2个整数m和n，写⼀个函数average，求2个整数的平均值，考虑整数过⼤溢出的问题。
*/
//使⽤C语⾔写⼀个程序打印 1~100之间的奇数，要求输出的数字中间加上空格。
//#include<stdio.h>
//int main()
//{
//    for (int i = 0; i <= 100; i++)
//    {
//        if (i % 2 != 0)
//        {
//            printf("%d ",i);
//        }
//    }
//    return 0;
//}


//打印9*9乘法⼝诀表
#include<stdio.h>
//int main()
//{
//	for (int i = 1; i <= 9; i++)
//	{
//		for (int j = 1; j <= i; j++)
//		{
//			printf("%d*%d=%-2d ", i, j, i * j);
//		}
//		printf("\n");
//	}
//	return 0;
//}


//使⽤C语⾔写⼀个程序打印100~200之间的素数，数字中间使⽤空格分割。
//#include<math.h>
//int main()
//{
//    for (int i = 101; i <= 200; i += 2)
//    {
//        int flg = 1;
//        for (int j = 2; j <= sqrt(i); j++)
//        {
//            if (i % j == 0)
//            {
//                flg = 0;
//                break;
//            }
//        }
//        if (flg == 1)
//        {
//            printf("%d ", i);
//        }
//    }
//    return 0;
//}


//输⼊三个整数a, b, c，判断由a, b, c作为三条边组成的三⻆形，如果不能组成三⻆形则输出：⾮三⻆
//形；如果是三⻆形，再继续判断，如果是等边三⻆形，则输出：等边三⻆形；如果是等腰三⻆形，则
//输出：等腰三⻆形；否则输出普通三⻆形。
//int main()
//{
//    int a = 0, b = 0, c = 0;
//    scanf("%d%d%d",&a,&b,&c);
//    if (a + b < c || a + c < b || b + c < a)
//    {
//        printf("非三角形\n");
//    }
//    else
//    {
//        if (a == b && c == b)
//        {
//            printf("等边三角形\n");
//        }
//        else if (a == b || a == c || b == c)
//        {
//            printf("等腰三角形\n");
//        }
//        else
//        {
//            printf("普通三角形\n");
//        }
//    }
//    return 0;
//}



//输⼊2个整数m和n，计算m和n的最⼤公约数，并打印出结果。
//int main()
//{
//    int m = 0, n = 0;
//    scanf("%d %d", &m, &n);
//    int k = 0;
//    while (k = m % n)
//    {
//        m = n;
//        n = k;
//    }
//    printf("%d", n);
//    return 0;
//}

//2个整数m和n，计算m和n的最⼩公倍数，并打印出结果
//int main()
//{
//    int m = 0, n = 0;
//    scanf("%d %d", &m, &n);
//    int k = 0;
//    int mul = m * n;
//    while (k = m % n)
//    {
//        m = n;
//        n = k;
//    }
//    printf("%d", mul / n);
//    return 0;
//}

//计算 1/1 - 1/2 + 1/3 - 1/4 + 1/5 - … + 1/99 - 1/100 的值，并打印出结果，（注：除法分为整数除法和
//浮点数除法，要计算出⼩数，得采⽤浮点数除法，浮点数除法的操作数中⾄少要保证有⼀个浮点
//数。）
//int main()
//{
//    int sign = 1;
//    float sum = 0;
//    for (int i = 1; i <= 100; i++)
//    {
//        sum += 1.0 / i * sign;
//        sign *= -1;
//    }
//    printf("%f", sum);
//    return 0;
//}


//输⼊10个整数，写代码找出其中最⼤值和最⼩值，计算最⼤值和最⼩值的差，并打印出差值结果
//int main()
//{
//    int arr[10];
//    for (int i = 0; i < 10; i++)
//    {
//        scanf("%d", &arr[i]);
//    }
//    int max = arr[0], min = arr[0];
//    for (int i = 1; i < 10; i++)
//    {
//        if (max < arr[i])
//        {
//            max = arr[i];
//        }
//        if (min > arr[i])
//        {
//            min = arr[i];
//        }
//    }
//    printf("%d", max - min);
//    return 0;
//}

//冒泡排序 + 选择排序
//int main()
//{
//    int arr[10];
//    for (int i = 0; i < 10; i++)
//    {
//        scanf("%d", &arr[i]);
//    }
//    for (int i = 0; i < 9; i++)
//    {
//        for (int j = 0; j < 9 - i; j++)
//        {
//            if (arr[j] < arr[j + 1])
//            {
//                int tmp = arr[j];
//                arr[j] = arr[j + 1];
//                arr[j + 1] = tmp;
//            }
//        }
//    }
//    for (int i = 0; i < 10; i++)
//    {
//        printf("%d ", arr[i]);
//    }
//    printf("\n");
//    for (int i = 0; i < 9; i++)
//    {
//        int k = i;
//        for (int j = i + 1; j < 10; j++)
//        {
//            if (arr[k] > arr[j])
//            {
//                k = j;
//            }
//        }
//        if (k != i)
//        {
//            int tmp = arr[k];
//            arr[k] = arr[i];
//            arr[i] = tmp;
//        }
//    }
//    for (int i = 0; i < 10; i++)
//    {
//        printf("%d ", arr[i]);
//    }
//    return 0;
//}


//某地发⽣了⼀件盗窃案，警察通过排查确定盗窃者必为4个嫌疑⼈的⼀个。
//以下为4个嫌疑⼈的供词 :
//A说：不是我。
//B说：是C。
//C说：是D。
//D说：C在胡说
//已知3个⼈说了真话，1个⼈说的是假话。
//现在请根据这些信息，写⼀个程序来确定到底谁是盗窃者。

//int main()
//{
//    char thieves;
//    for (thieves = 'a'; thieves <= 'd'; thieves++)
//    {
//        if ((thieves != 'a') + (thieves == 'c') + (thieves == 'd') + (thieves != 'd') == 3)
//        {
//            printf("thieves is :%c", thieves);
//        }
//    }
//    return 0;
//}

//写⼀个代码打印1~100000之间的所有的⾃幂数，中间⽤空格分隔。
//#include<math.h>
//int main()
//{
//    for (int i = 1; i <= 100000; i++)
//    {
//        int k = i;
//        int count = 0;
//        while (k)
//        {
//            count++;
//            k /= 10;
//        }
//        k = i;
//        int sum = 0;
//        while (k)
//        {
//            sum += (int)pow(k % 10, count);
//            k /= 10;
//        }
//        if (sum == i)
//        {
//            printf("%d ", i);
//        }
//        
//    }
//    return 0;
//}

//输⼊⼀个整数n，打印对应2*n-1⾏的菱形图案
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    for (int i = n; i > 0; i--)
//    {
//        for (int j = 1; j < 2 * n ; j++)
//        {
//            if (j < i || j > 2 * n - i)
//            {
//                printf(" ");
//            }
//            else
//            {
//                printf("*");
//            }
//        }
//        printf("\n");
//    }
//    for (int i = 2; i <= n; i++)
//    {
//        for (int j = 1; j < 2 * n; j++)
//        {
//            if (j < i || j > 2 * n - i)
//            {
//                printf(" ");
//            }
//            else
//            {
//                printf("*");
//            }
//        }
//        printf("\n");
//    }
//    return 0;
//}

//⽔已知1瓶汽⽔1元，2个空瓶可以换⼀瓶汽⽔，输⼊整数n（n>=0），表⽰n元钱，计算可以多少汽
//⽔，请编程实现。
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int empty = 0;
//    int soda_Sum = 0;
//    while (n > 0)
//    {
//        soda_Sum += n;
//        empty += n;
//        n = empty / 2;
//        empty -= 2 * n;
//    }
//    printf("%d", soda_Sum);
//    return 0;
//}



//输⼊⼀个字符串，将字符串中⼤写字⺟全部转为⼩写字⺟，⼩写字⺟转成⼤写字⺟，其他字符保持不
//变。注：字符串的⻓度⼩于等于30，其中字符串中包含空格
//#include<ctype.h>
//int main()
//{
//    char str[31] = { 0 };
//    gets(str);
//    int sz = strlen(str);
//    for (int i = 0; i < sz; i++)
//    {
//        if (islower(str[i]))
//        {
//            str[i] = toupper(str[i]);
//        }
//    }
//    printf("%s",str);
//    return 0;
//}


//写⼀个函数Swap，可以交换两个整数的内容。注意必须实现成函数完成。
//void Swap(int* pN1, int* pN2)
//{
//    int tmp = *pN1;
//    *pN1 = *pN2;
//    *pN2 = tmp;
//}
//int main()
//{
//    int n1 = 0, n2 = 0;
//    scanf("%d%d", &n1, &n2);
//    Swap(&n1, &n2);
//    printf("%d %d", n1, n2);
//    return 0;
//}

//输⼊2个整数m和n，写⼀个函数average，求2个整数的平均值，考虑整数过⼤溢出的问题。
//int average(int x, int y)
//{
//    return x + (y - x) / 2;
//}
//int main()
//{
//    int m = 0, n = 0;
//    scanf("%d %d", &m, &n);
//    int aver = average(m, n);
//    printf("%d",aver);
//    return 0;
//}


//写⼀个函数Strlen，可以求字符串⻓度
//int Strlen(char* str)
//{
//    int count = 0;
//    while (str[count])
//    {
//        count++;
//    }
//    return count;
//}
//int main()
//{
//    char str[31] = { 0 };
//    gets(str);
//    int len = Strlen(str);
//    printf("%d", len);
//    return 0;
//}


//输⼊⼀个字符串，写⼀个函数将⼀个字符串的内容逆序过来。
//void reverse(char* str)
//{
//    int first = 0;
//    int last = strlen(str) - 1;
//    while (first < last)
//    {
//        int tmp = str[first];
//        str[first++] = str[last];
//        str[last--] = tmp;
//    }
//}
//int main()
//{
//    char str[31];
//    gets(str);
//    reverse(str);
//    printf("%s", str);
//    return 0;
//}

//输⼊⼀个整数m，求这个整数m的每⼀位之和，并打印。
//int main()
//{
//    int m = 0;
//    scanf("%d", &m);
//    int sum = 0;
//    while (m)
//    {
//        sum += m % 10;
//        m /= 10;
//    }
//    printf("%d",sum);
//}


//输⼊⼀个字符串，判断这个字符串是否是回⽂字符串（字符串的⻓度⼩于等于30，字符串不包含空
//格），如果是回⽂字符串输出Yes，如果不是回⽂字符串输出No。
//int main()
//{
//    char str[31] = { 0 };
//    gets(str);
//    int first = 0;
//    int last = strlen(str) - 1;
//    int flg = 1;
//    while (first < last)
//    {
//        if (str[first++] != str[last--])
//        {
//            flg = 0;
//            printf("NO");
//            break;
//        }
//    }
//    if (flg == 1)
//    {
//        printf("YES");
//    }
//    return 0;
//}
